//m*n 的二维数组 plants 记录了园林景观的植物排布情况，具有以下特性： 
//
// 
// 每行中，每棵植物的右侧相邻植物不矮于该植物； 
// 每列中，每棵植物的下侧相邻植物不矮于该植物。 
// 
//
// 
//
// 请判断 plants 中是否存在目标高度值 target。 
//
// 
//
// 示例 1： 
//
// 
//输入：plants = [[2,3,6,8],[4,5,8,9],[5,9,10,12]], target = 8
//
//输出：true
// 
//
// 
//
// 示例 2： 
//
// 
//输入：plants = [[1,3,5],[2,5,7]], target = 4
//
//输出：false
// 
//
// 
//
// 提示： 
//
// 
// 0 <= n <= 1000 
// 0 <= m <= 1000 
// 
//
// 注意：本题与主站 240 题相同：https://leetcode-cn.com/problems/search-a-2d-matrix-ii/ 
//
// 
//
// Related Topics 数组 二分查找 分治 矩阵 👍 1037 👎 0


package LeetCode.editor.cn;


/**
 * @author ldltd
 * @date 2025-04-21 12:40:02
 * @description LCR 121.寻找目标值 - 二维数组
 
 */
 
public class ErWeiShuZuZhongDeChaZhaoLcof {
    public static void main(String[] args) {
    //测试代码
    ErWeiShuZuZhongDeChaZhaoLcof fun = new ErWeiShuZuZhongDeChaZhaoLcof();
    Solution solution= fun.new Solution();
    solution.findTargetIn2DPlants(new int[][]{{-5}},-10);
    }

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
        //从左到右，从上到下递增，从右上角开始二分
    public boolean findTargetIn2DPlants(int[][] plants, int target) {
        int m = plants.length;
        if(m==0) return false;
        int n = plants[0].length;
        int i=0,j=n-1;
        while (i<m&&j>=0){
            if(plants[i][j]==target) return true;
            else if(plants[i][j]>target) j--;
            else if(plants[i][j]<target) i++;
        }
        return false;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
